package cn.forge.mall.module.system.service.oauth2;

import cn.forge.mall.framework.common.exception.GlobalErrorCodeConstants;
import cn.forge.mall.framework.common.exception.util.ServiceExceptionUtils;
import cn.forge.mall.framework.common.util.DateUtils;
import cn.forge.mall.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
import cn.forge.mall.module.system.dal.mysql.oauth2.OAuth2AccessTokenMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author liangyuanping
 * @ClassName OAuth2AccessTokenServiceImpl
 * @description:
 * @date 2024年03月21日
 * @version: 1.0
 */
@Service
@Slf4j
public class OAuth2AccessTokenServiceImpl implements OAuth2AccessTokenService {

    @Resource
    private OAuth2AccessTokenMapper oAuth2AccessTokenMapper;

    @Override
    public OAuth2AccessTokenDO checkAccessToken(String accessToken) {
        OAuth2AccessTokenDO oAuth2AccessTokenDO = oAuth2AccessTokenMapper.selectByAccessToken(accessToken);
        // 判断token是否存在
        if (oAuth2AccessTokenDO == null) {
            throw ServiceExceptionUtils.exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌不存在");
        }
        //判断token过期时间
        if (DateUtils.isExpired(oAuth2AccessTokenDO.getExpiresTime())) {
            throw ServiceExceptionUtils.exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌已过期");
        }
        return oAuth2AccessTokenDO;
    }
}
